<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 解构赋值就是按照一定的模式将数据从对象或者数组中取出来
        // var arr = [1, 2, 3]

        // // var a = arr[0]
        // // var b = arr[2]
        // // 解构赋值要求等号两边的数据结构保持一致
        // // 数组的解构赋值是按照索引值进行的
        // var [a,, b] = arr

        // console.log(a, b);

        // var a = 1
        // var b = 2

        // var [b, a] = [a, b]
        // console.log(b, a);
        // var arr = [1, 2, 3]
        // ... 扩展运算符 他会将剩下的所有数据放入一个数组中
        // 扩展运算符必须使用在最后一个变量中
        // var [...a, b] = arr

        // console.log(a, b);

        // var arr = [1, [2, 3, [6]], 4, 5]

        // var [,[, ,[a]]] = arr

        // console.log(a);

        // var arr = [1, 2, 3, 4]
        // // 解构赋值设置默认值
        // var [a, b, c, d = "德玛西亚"] = arr
        // console.log(d);

        // 对象的解构赋值
        // 对象的解构是根据对象的key来的

        // var obj = {
        //     name: '李狗蛋',
        //     age: 16,
        //     weight: '100t',
        //     info: {
        //         tel: 110
        //     }
        // }


        // var {name, info: {tel}, sex="男"} = obj

        // console.log(name, tel);
        // 字符串能不能解构赋值
        // 字符串可以解构赋值但是会按照数组的结构赋值的逻辑进行
        // var str = '德玛西亚'

        // var [a, b, c, d] = str
        // console.log(a, b, c, d);
        // var num = 123

        // var [a, b, c] = num
        // console.log(a, b, c);
        // var str = true

        // 函数参数的结构赋值 对象和数组的解构赋值在函数参数中完全适用
        // 从而导致函数参数可以设置默认值
        // var arr = [1, 2, 3]
        // function fn([a, ...b]) {
        //     console.log(a,b,c);
        // }


        // fn(arr)

        // function fn({name}) {
        //     console.log(name);
        // }

        // fn({
        //     name: '张三',
        //     age: 16
        // })

        function fn(a = 1, b = 2) {
            return a + b
        }

        console.log(fn(4, 5));
    </script>
</body>
</html>